$.validator.setDefaults({
	onkeyup:false
	//focusCleanup:true
});
/**
 * 工具组件 对原有的工具进行封装，自定义某方法统一处理
 */
// 表单json格式化方法……不使用&拼接
(function($) {
	$.fn.serializeJson = function() {
		var serializeObj = {};
		var array = this.serializeArray();
		$(array).each(
				function() {
					if (serializeObj[this.name]) {
						if ($.isArray(serializeObj[this.name])) {
							serializeObj[this.name].push(this.value);
						} else {
							serializeObj[this.name] = [
									serializeObj[this.name], this.value ];
						}
					} else {
						serializeObj[this.name] = this.value;
					}
				});
		return serializeObj;
	};
})(jQuery);

//////////////////验证相关////////////////////////////////
//验证价格 对应数据库number(10,2) 8位正整数，2位小数点 
//需要关闭输入法 style="ime-mode: Disabled"仅支持IE
function regPrice(obj)
{
	var reg =/^((\d{0,8})|(\d{0,8}\.\d{0,2}))$/;
	var inputStr=String.fromCharCode(event.keyCode);
	var docSel = document.selection.createRange();
	if (docSel.parentElement().tagName != "INPUT") return false;
	oSel = docSel.duplicate();
	oSel.text = "";
	var srcRange = obj.createTextRange();
	oSel.setEndPoint("StartToStart", srcRange);
	var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length);
	return reg.test(str);
}
/**
* 验证数量（整数）
* @param {Object} obj
* @return {TypeName} 
*/
function regNum(obj)
{
	var reg =/^([1-9]\d{0,7})$/;
	var inputStr=String.fromCharCode(event.keyCode);
	var docSel = document.selection.createRange();
	if (docSel.parentElement().tagName != "INPUT") return false;
	oSel = docSel.duplicate();
	oSel.text = "";
	var srcRange = obj.createTextRange();
	oSel.setEndPoint("StartToStart", srcRange);
	var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length);
	return reg.test(str);
}
/**
 * 验证是否是身份证号
 * @param num
 * @returns {Boolean}
 */
function checkidcard(num) {  
    var len = num.length, re;  
    if (len == 15)  
        re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);  
    else if (len == 18)  
        re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);  
    else {  
        //alert("请输入15或18位身份证号,您输入的是 "+len+ "位");     
        return false;  
    }  
    var a = num.match(re);  
    if (a != null) {  
        if (len == 15) {  
            var D = new Date("19" + a[3] + "/" + a[4] + "/" + a[5]);  
            var B = D.getYear() == a[3] && (D.getMonth() + 1) == a[4] && D.getDate() == a[5];  
        } else {  
            var D = new Date(a[3] + "/" + a[4] + "/" + a[5]);  
            var B = D.getFullYear() == a[3] && (D.getMonth() + 1) == a[4] && D.getDate() == a[5];  
        }  
        if (!B) {  
            //alert("输入的身份证号 "+ a[0] +" 里出生日期不对！");     
            return false;  
        }  
    }  

    return true;  
}
//添加验证方法 (日期是当前时间之后的)    
jQuery.validator.addMethod("flutredate", function (value, element) {  
	var now = new Date();
	var nowdata = now.getFullYear()+"-"+((now.getMonth()+1)<10?"0":"")+(now.getMonth()+1)+"-"+(now.getDate()<10?"0":"")+now.getDate();
	var date1 = new Date(Date.parse(nowdata.replace("-", "/")));
    var date2 = new Date(Date.parse(value.replace("-", "/")));
    return date1 < date2;
}, "请选择当前日期之后的日期"); 
// 添加验证方法 (身份证号码验证)    
jQuery.validator.addMethod("isIdCardNo", function (value, element) {  
    return this.optional(element) || checkidcard(value);  
}, "请正确输入您的身份证号码");  
//验证价格 对应数据库number(10,2) 最多8位正整数和2位小数点 
jQuery.validator.addMethod("isPrice", function (value, element) {
	var reg = /^((\d{0,8})|(\d{0,8}\.\d{0,2}))$/;
	return this.optional(element) || (reg.test(value));
}, "请输入合法的价格,最大支持8位正整数和2位小数,如：1.20");

//验证价格 对应数据库number(10,1) 最多8位正整数和1位小数点 
jQuery.validator.addMethod("isPriceOne", function (value, element) {
	var reg = /^((\d{0,8})|(\d{0,8}\.\d{0,1}))$/;
	return this.optional(element) || (reg.test(value));
}, "请输入合法的价格,最大支持8位正整数和1位小数点,如：1.2");
/**
* 正整数验证
*/
jQuery.validator.addMethod("isPositiveInteger", function (value, element) {
	var num =  /^\d*$/;
	return this.optional(element) || (num.test(value));
}, "请输入不小于0的整数");
/**
 * 添加一个用于验证大于0的正整数的方法 
 */
jQuery.validator.addMethod("positiveinteger", function(value, element) {
 var aint=parseInt(value); 
 return aint>0&& (aint+"")==value; 
 }, "请输入大于0的整数"); 
/**
* 整数验证
*/
jQuery.validator.addMethod("isInteger", function (value, element) {
	var num =  /^(-?\d+|\d*)$/;
	return this.optional(element) || (num.test(value));
}, "请输入整数");
       
jQuery.validator.addMethod("isNormalName",function(value, element) {
	return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);}, 
	"请不要输入除中文字、英文字母、数字和下划线以外的字符"
); 

jQuery.validator.addMethod("isNum", function (value, element) {
	var num = /^(\+|-)?(0|[1-9]\d*)(\.\d*[0-9])?$/;
	return this.optional(element) || (num.test(value));
}, "请输入数字,如：1");

jQuery.validator.addMethod("isChinese", function (value, element) {
	 var reg = /[\u4E00-\u9FA5]/g;
	return this.optional(element) || (!reg.test(value));
}, "请不要输入中文");
jQuery.validator.addMethod("requiredImg", function (value, element) {
	 var reg = "file/a.png";
	return value==reg;
}, "请不要输入中文");

jQuery.validator.addMethod("isUserName", function (value, element) {
	var reg=/^([0-9a-zA-Z_])*$/;
	return this.optional(element) || (reg.test(value));
}, "请不要输入除英文字母、数字和下划线以外的字符");

//正常电话号码验证
jQuery.validator.addMethod("isPhone", function (value, element) {
	var tel = /^(\d{3,4}-?)?\d{7,9}$/g;
	return this.optional(element) || (tel.test(value));
}, "\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u8054\u7cfb\u7535\u8bdd");
/*手机号码验证，由于目前手机号码拓展速度快，故放开查询条件，
   	*手机号码只验证以1开头的十一位数字即为合法手机
    */
jQuery.validator.addMethod("isSim", function (value, element) {
	var sim = /^1\d{10}$/g;
	return this.optional(element) || (sim.test(value));
}, "\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7\u7801");

/*联系方式验证，可以是电话号码，也可以是手机号码
   	*手机号码只验证以1开头的十一位数字即为合法手机
   	* 电话号码
    */
jQuery.validator.addMethod("isContact", function (value, element) {
	var sim = /^1\d{10}$/g;
	var tel = /^(\d{3,4}-?)?\d{7,9}$/g;
	return this.optional(element) || (sim.test(value))|| (tel.test(value));
}, "\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u6216\u56fa\u8bdd\u53f7\u7801");
/**
 * 0-100百分比
 */
jQuery.validator.addMethod("isRatio", function (value, element) {
 var num = Number(value);
 var reg = /^((\d{0,8})|(\d{0,8}\.\d{0,2}))$/;
return this.optional(element) || ((num<=100&&num>=0)&&(reg.test(value)));
}, "请输入范围在 0 到 100之间的数值（最多2位小数）");